Примечание: Возможность выбора конкретной категории заказчиком условно не предполагается. Данный анализ разрабатывается с целью оценить шансы отдельного проекта, а не выбрать наиболее перспективную категорию для вложения средств. Исследователь считает нецелесообразным рекомендовать заказчику сферу деятельности, так как у заказчика на момент обращения должна быть конкретная сфера интересов, в которой он будет реализовывать свой продукт.
Немаловажным фактором успешности проекта может стать день старта сбора средств. Действительно, в определенные дни, к примеру, когда люди более расслабленны от работы - они готовы пожертвовать больше средств. Так ли это на самом деле? Разберемся в результатах исследования.
Промежуточный вывод по графику:
На основе созданных графиков можно сделать вывод, что свой проект на платформе kickstarter лучше запускать во вторник, так как в этот день люди готовы вкладывать в проекты более активно, чем в остальные дни. Из этого можно сделать вывод, что дата открытия сбора средств является одним из факторов успеха проекта.
текст.
Промежуточный вывод по графику:
Проведя исследование доступных нам данных, я определил категории проектов, у которых процент успешности является наибольшим. Такими проектами являются проекты в категориях: комиксы (69%), танцы (62.9%) и театр (60.4%). Это может быть связано с тем, что все эти три категории так или иначе связаны с развлечением и известными группами или авторами, что снижает процент риска. Немало важным фактором может являться известность издателя, группы или исполнителя. Именно поэтому эти категории являются наиболее привлекательными для спонсоров.
Текст.
Промежуточный вывод по графику:
Проведя исследование доступных нам данных, я определил лучшие проекты по собранным средствам. Такими стали проекты в сфере Дизайна, Игр и Технологий. Вывод - пользователи кикстартера заинтересованы в этих категориях и готовы вкладывать в них деньги.
Текст.
Промежуточный вывод по графику:
Данный интерактивный график показывает отношение успешных проектов к провальным по странам мира. Несмотря на выбросы данных в США, показатели распределились равномерно. Явным фаворитом является Дания, так как показатель в этой стране превышает единицу, что означает преобладание успешных проектов над провальными.
# Проверка качества модели
pred = predict(tree1, type="class")
t = table(ks$state, pred)
t
## pred
## failed successful
## failed 22108 2798
## successful 1283 17146
# accuracy
(t[1,1] + t[2,2])/sum(t)
## [1] 0.9058267
ks$predicted = pred
source("~/shared/minor2_2019/1-Intro/lab09-gini-trees/compute_gini.R") # загружаем функцию Джини
gini_split(data = ks, real = state, predicted = predicted)
## [1] 0.1669823
Вывод по дереву решений:
Категория backers является важным фактором успешности проекта. Так как изначально мы ее не знаем, заказчик может оценить шансы своего действующего проекта, основываясь на даннном дереве принятия решений. Точность модели - 0.905, коэфициент Джини - 0.167 (чем меньше, тем лучше).
ks$id = 1:nrow(ks)
# "зерно" для генератора случайных чисел
set.seed(12345)
# Возьмем 80% как обучающие
train = ks %>% dplyr::sample_frac(.8)
# Создаем тестовый набор данных
# Через анти-джойн, чтобы убрать все наблюдения, попавшие в обучающую выборку
test = dplyr::anti_join(ks, train, by = 'id') %>% dplyr::select(-id, -name, -launched, -deadline)
train = train %>% dplyr::select(-id, -name, -launched, -deadline)
#посмотрим предсказания для новых данных -- не забываем указывать тип предсказания
pred = predict(tree2, type="class")
#матрица смежности
t = table(pred, train$state)
t
##
## pred failed successful
## failed 17666 1041
## successful 2224 13737
(t[1,1] + t[2,2])/sum(t)
## [1] 0.9058209
# Тестовая модель
pred2 = predict(tree2, test, type="class")
## Accuracy на тестовой
t = table(pred2, test$state)
t
##
## pred2 failed successful
## failed 4467 251
## successful 549 3400
(t[1,1] + t[2,2])/sum(t)
## [1] 0.9076959
# **Проблема переобучения.** Для её решения используется оценка дерева на каждом уровне с помощью кроссвалидации -- перебираются варианты с разными значениями параметра, регулирующего глубину дерева, выбирая то значение, при котором ошибка становится минимальной.
tree3 <- rpart(state ~ main_category + goal_usd + time +backers, method = "class", data = ks, cp= 0.001)
knitr::kable(as.data.frame(tree3$cptable)) # cp = 0.0001628 , xerror = 0.1730425|
| CP | nsplit | rel error | xerror | xstd |
|---|---|---|---|---|
| 0.6552173 | 0 | 1.0000000 | 1.0000000 | 0.0055845 |
| 0.0408053 | 1 | 0.3447827 | 0.3447827 | 0.0039957 |
| 0.0208639 | 3 | 0.2631722 | 0.2674589 | 0.0035864 |
| 0.0062673 | 5 | 0.2214445 | 0.2269250 | 0.0033354 |
| 0.0028036 | 7 | 0.2089099 | 0.2160182 | 0.0032626 |
| 0.0027945 | 10 | 0.2004992 | 0.2074448 | 0.0032037 |
| 0.0022790 | 12 | 0.1949102 | 0.2026697 | 0.0031701 |
| 0.0018178 | 14 | 0.1903522 | 0.1980031 | 0.0031368 |
| 0.0016279 | 17 | 0.1848174 | 0.1940420 | 0.0031081 |
| 0.0014651 | 18 | 0.1831895 | 0.1907320 | 0.0030838 |
| 0.0014108 | 20 | 0.1802594 | 0.1888871 | 0.0030702 |
| 0.0011938 | 21 | 0.1788486 | 0.1875305 | 0.0030601 |
| 0.0010000 | 23 | 0.1764610 | 0.1839492 | 0.0030333 |
Вывод по генерализации и переобучению модели:
Точность тестовой - 0.907 Точность тренировочной - 0.905 cp = 0.0001628 xerror = 0.1730425
ch <- chisq.test(ks$main_category, ks$country)
ch
##
## Pearson's Chi-squared test
##
## data: ks$main_category and ks$country
## X-squared = 2543.5, df = 280, p-value < 2.2e-16
Вывод по 1: pvalue M 2.2 e-16 —- Согласно результатам хи-квадрата, наблюдается статистически значимое различие между категорией проекта и страной.
t.test(backers~state, data = ks)
##
## Welch Two Sample t-test
##
## data: backers by state
## t = -35.818, df = 18474, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -322.1174 -288.6918
## sample estimates:
## mean in group failed mean in group successful
## 14.57496 319.97954
Вывод по 2: pvalue M 2.2 e-16 —- Согласно результатам ти-теста, наблюдается статистически значимое различие между количеством донатеров и успешностью проекта.
На основе проведённого анализа, представленного для владельца будущего проекта на кикстартере, я бы хотел привести ряд рекомендаций для потенциального заказчика: